A typical software product, such as a database, word processor, spreadsheet, utility may be organized into a group or “suite” of individual component programs, or “components.” A suite may include several distinct software products, each having its own components and possibly sharing one or more components with other products in the suite.
Many of the components of a software suite may not be required for use of other components or the suite as a whole, but may, instead, be included as enhancements or options. A user of the software, and/or the developer of the software, may desire that some of the components be installed when the software suite is being used for certain tasks. For example, if the software suite is installed on a computer system that is a part of a multi-location network, a user or the suite developer may desire that more networking components be installed than in a stand-alone scenario. As another example, a user that frequently uses a certain file type, for example a “pdf” file, may desire that the software function with pdf files whereas a user that infrequently uses pdf files may not deem such functionality important.
Some components may be desirable regardless of the scenario in which the suite is being used. For example, the suite developer may periodically introduce updates and patches to various components in the form of so-called “service packs” and “hot fixes.” It may be desirable to make service packs and hot fixes mandatory components that get installed regardless of the scenario for which the suite is being used.
Computer networks provide a channel for software installation.
In one current method for installing software a small installer application is transferred from one computing device to a second computing device, for example from a server to a client computer. Execution of the installer application begins the installation process and the installer application obtains/transfers the remainder of application suite from the first computing device and installs suite components on the second computing device. During download and installation the computing device(s) may be “locked” from performing other tasks and a substantial portion or all of the available network bandwidth may be devoted to the file transfer. Further, applications already running on the computing device may need to be closed and/or the computing device rebooted (shut down and re-started).
In another current method of installing software an entire application suite, in compressed or uncompressed form, is transferred from one computing device to a second computing device, for example in the form of a disk image. An installer application transferred with the suite proceeds to install suite components. Again, during download and installation the computing device(s) may be “locked” from performing other tasks and a substantial portion or all of the available network bandwidth may be devoted to the file transfer. Also, applications running on the computing device may need to be closed and/or the computing device rebooted.
As will be appreciated, both of the foregoing described methods for installing software create inefficiencies in computer processor usage, network usage, file access and/or computer memory space. Further, the installation of complete software application suites by the foregoing methods may result in installation of software components that a user does not desire and that may create incompatibilities with other software desirable to the user. The unused components may also use valuable storage space and/or memory on the computer.
Accordingly, it would be desirable to have new and improved methods for installing software.